package p6.code;

/**
 * 这个类是线程安全的计数器类
 * 通过封闭技术，只把线程安全的操作暴露给客户端
 */
public final class Counter {

    private long value = 0;

    public synchronized long getValue() {
        return value;
    }

    public synchronized long increment() {
        if(value==Long.MAX_VALUE) {
            throw new IllegalArgumentException("counter overflow");
        }
        return ++value;
    }

}
